

// 工具集合Tools
window.T = {};

/**
 * 项目根路径
 */
var baseURL = getRootUrl() + "/";

/**
 * 获取项目路径
 * 
 * @returns
 */
function getRootUrl() {
	var path = window.location.pathname.substring(1);
	var root = (path == '') ? '' : path.substring(0, path.indexOf('/'));
	return window.location.protocol + '//' + window.location.host + '/' + root;
}

// 登录token
var token = localStorage.getItem("token");
if (token == 'null') {
	top.location.href = baseURL + 'login.html';
}

// jquery全局配置
$.ajaxSetup({
	dataType : "json",
	cache : false,
	headers : {
		"token" : token
	},
	complete: function(xhr) {
		// token过期，则跳转到登录页面
		if (xhr.responseJSON) {
			if (xhr.responseJSON.code == 401) {
				top.location.href = baseURL + 'login.html';
			}
		}
	}
});

/** ***** 表单提交显示loading up ******* */

var l = null;	// 加载按钮
var laddaFlag = false;
// 判断表单内提交按钮是否存在
if(!laddaFlag) {
	if ($('form button[type="submit"]').length > 0) {
		getLaddaJs();
	}
}

// 备份jquery的ajax方法
var _ajax=$.ajax;  
// 重写jquery的ajax方法
$.loadAjax=function(opt){  
    // 备份opt中error和success方法
    var fn = {  
    	beforeSend:function(XMLHttpRequest){},  
    	complete:function(XMLHttpRequest){}  
    }  
    if(opt.beforeSend){  
        fn.beforeSend=opt.beforeSend;  
    }  
    if(opt.complete){  
        fn.complete=opt.complete;  
    }  
    // 扩展增强处理
    var _opt = $.extend(opt,{  
    	beforeSend:function(XMLHttpRequest){  
    		
    		l = Ladda.create(document.querySelector('form button[type="submit"]'));
		 	l.start();
            fn.beforeSend(XMLHttpRequest);  
        },  
        complete:function(XMLHttpRequest){
        	
        	if(l != null) {
    			l.stop();
    		}
        	// token过期，则跳转到登录页面
    		if (xhr.responseJSON.code == 401) {
    			top.location.href = baseURL + 'login.html';
    		}
            fn.complete(XMLHttpRequest);  
        }  
    });  
    _ajax(_opt);  
};  

/**
 * 加载Ladda 所需css、js
 * 
 * @returns
 */
function getLaddaJs() {
	
	laddaFlag = true;
	$("<link>").attr({ rel: "stylesheet", type: "text/css", href: baseURL + "public/vendor/ladda-bootstrap/ladda.css"}).appendTo("head");
	$("<script>").attr({ type: "text/javascript", src: baseURL + "public/vendor/ladda-bootstrap/spin.min.js"}).appendTo("body");
	$("<script>").attr({ type: "text/javascript", src: baseURL + "public/vendor/ladda-bootstrap/ladda.min.js"}).appendTo("body");
	$('form button[type="submit"]').addClass('ladda-button');
	$('form button[type="submit"]').attr('data-style','expand-left');
}

/** ***** 表单提交显示loading end ******* */

/**
 * 权限判断
 * 
 * @param url
 * @returns boolean
 */
function hasPermission(permission) {
	
	var permissions = localStorage.getItem("permissions");
	if (permissions.indexOf(permission) > -1) {
		return true;
	} else {
		return false;
	}
}

// 重写alert
window.alert = function(msg, callback) {
	top.layer.alert(msg, function(index) {
		top.layer.close(index);
		if (typeof (callback) === "function") {
			callback("ok");
		}
	});
}

// 重写confirm式样框
window.confirm = function(msg, callback) {
	top.layer.confirm(msg, {
		btn : [ '确定', '取消' ]
	}, function() {// 确定事件
		if (typeof (callback) === "function") {
			callback("ok");
		}
	});
}

/**
 * 通用的layer弹窗
 */
function layer_show(title,url,w,h, idFlag){
	
	if (title == null || title == '') {
		title=false;
	};
	if (url == null || url == '') {
		layer.msg('url不能为空！')
		return ;
	};
	if (w == null || w == '') {
		w=800;
	};
	if (h == null || h == '') {
		h=($(window).height() - 50);
	};
	// 是否需要获取选中行id
	var id;
	if (idFlag){
		id = getCheckId();
		if(!id || id == null){
			layer.msg("请选择一条记录！");
			return ;
		}
		url += "?id=" + id;
	}
	layer.open({
		type: 2,
		area: [w+'px', h +'px'],
		fix: false,
		maxmin: true,
		shade:0.4,
		title: title,
		content: url
	});
}
/**
 * 通用的layer弹窗(弹出即全屏)
 */
function layer_show_full(title,url,w,h, idFlag){
	
	if (title == null || title == '') {
		title=false;
	};
	if (url == null || url == '') {
		layer.msg('url不能为空！')
		return ;
	};
	if (w == null || w == '') {
		w=800;
	};
	if (h == null || h == '') {
		h=($(window).height() - 50);
	};
	// 是否需要获取选中行id
	var id;
	if (idFlag){
		id = getCheckId();
		if(!id || id == null){
			layer.msg("请选择一条记录！");
			return ;
		}
		url.indexOf("?")>-1?url += "&id=" + id:url += "?id=" + id;
	}
	var index = layer.open({
		type: 2,
		area: [w+'px', h +'px'],
		fix: false,
		maxmin: true,
		shade:0.4,
		title: title,
		content: url
	});
	layer.full(index);
}

/**
 * 返回到父页面并刷新表格
 */
function backToTable(){
	
	// 重新加载父页面表格
	window.parent.search(false);
	// 关闭当前页面
	var index = parent.layer.getFrameIndex(window.name); // 先得到当前iframe层的索引
	parent.layer.close(index);
}

/**
 * 关闭当前弹窗
 */
function closeParentLayer(){
	// 关闭当前页面
	var index = parent.layer.getFrameIndex(window.name); // 先得到当前iframe层的索引
	parent.layer.close(index);
}

// 加载中弹窗标识
var loadingIndex;
/**
 * 加载中提示
 */
function loading(){
	loadingIndex = layer.load()
}
/**
 * 加载完毕，关闭加载提示
 */
function loaded(){
	layer.close(loadingIndex);
}

/**
 * 获取url中的参数
 * 
 * @param name
 * @returns 参数内容
 */
function GetQueryString(name) {
     var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
     var r = window.location.search.substr(1).match(reg);
     if(r!=null) return decodeURI(r[2]); return null;
}
/**
 * 获取子页面选中行数据
 * 
 * @param layero
 * @returns 行数据
 */
function getIframeTableData(layero) {
	return window[layero.find('iframe')[0]['name']].getRowData();
}

/**
 * 显示图片
 * 
 * @param obj
 * @returns
 */
function showImg(obj){
	var src = $(obj).attr('src');
	if (!src || src == '') {
		layer.msg('暂无图片可查看');
		return ;
	}
	var photo = {
		  "title": "", // 相册标题
		  "id": 123, // 相册id
		  "start": 0, // 初始显示的图片序号，默认0
		  "data": [   // 相册包含的图片，数组格式
		    {
		      "alt": "",
		      "pid": 666, // 图片id
		      "src": src, // 原图地址
		      "thumb": "" // 缩略图地址
		    }
		  ]
		}
	  layer.photos({
		    photos: photo
		    ,anim: 5 // 0-6的选择，指定弹出图片动画类型，默认随机（请注意，3.0之前的版本用shift参数）
	  });
}

/**
 * 分转化为元
 * 
 * @param num
 * @returns
 */
function FenToYuan(num) {
    if ( typeof num !== "number" || isNaN( num ) ) return null;
    return ( num / 100 ).toFixed( 2 );
  }
/**
 * 分转化为元(保留0位)
 * 
 * @param num
 * @returns
 */
function FenToYuan0(num) {
    if ( typeof num !== "number" || isNaN( num ) ) return null;
    return ( num / 100 ).toFixed( 0 );
}
/**
 * 分转化为元(保留4位)
 * 
 * @param num
 * @returns
 */
function FenToYuan4(num) {
    if ( typeof num !== "number" || isNaN( num ) ) return null;
    return ( num / 100 ).toFixed( 4 );
  }

/**
 * 格式化金额
 * 
 * @param s
 * @param n
 * @returns
 */   
function fmoney(s, n) {  
   n = n > 0 && n <= 20 ? n : 2;  
   s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";  
   var l = s.split(".")[0].split("").reverse(),  
   r = s.split(".")[1];  
   t = "";  
   for(i = 0; i < l.length; i ++ ) {  
      t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");  
   }  
   return t.split("").reverse().join("") + "." + r;  
}

/**
 * 导出excel
 * 
 * @returns
 */
function downExcel(formId, url) {
	
	var form = $('#'+formId);
	$('#'+formId + ' input[name="token"]').remove();
	form.attr('action',baseURL + url);
	// 添加token
	var input = '<input type="hidden" name="token" value="' + token + '" />' ;
	form.append(input);
	form.submit(); // 提交表单
}
/**
 * 格式化日期
 * 
 * @param dataStr
 * @returns
 */
function formtDate(date, fmt) {
	if(date == undefined || date == '') {
		return "";
	}
	// date = date == undefined ? new Date() : date;
    // date = typeof date == 'number' ? new Date(date) : date;
	date = new Date(date);
    fmt = fmt || 'yyyy-MM-dd HH:mm:ss';
    var obj =
    {
        'y': date.getFullYear(), // 年份，注意必须用getFullYear
        'M': date.getMonth() + 1, // 月份，注意是从0-11
        'd': date.getDate(), // 日期
        'q': Math.floor((date.getMonth() + 3) / 3), // 季度
        'w': date.getDay(), // 星期，注意是0-6
        'H': date.getHours(), // 24小时制
        'h': date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, // 12小时制
        'm': date.getMinutes(), // 分钟
        's': date.getSeconds(), // 秒
        'S': date.getMilliseconds() // 毫秒
    };
    var week = ['天', '一', '二', '三', '四', '五', '六'];
    for(var i in obj) {
        fmt = fmt.replace(new RegExp(i+'+', 'g'), function(m) {
            var val = obj[i] + '';
            if(i == 'w') return (m.length > 2 ? '星期' : '周') + week[val];
            for(var j = 0, len = val.length; j < m.length - len; j++) val = '0' + val;
            return m.length == 1 ? val : val.substring(val.length - m.length);
        });
    }
    return fmt;
}
